import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

public class IntersectionOfTwoArrays {
    /*
    * 两个数组的交集
    * 给定两个数组 nums1 和 nums2 ，返回 它们的交集 。
    * 输出结果中的每个元素一定是 唯一 的。
    * 我们可以 不考虑输出结果的顺序 。
    * */
    public static void main(String[] args){

    }

    // 我的想法：因为限制了数组中的值最大为1000，因此用数组来记录元素有没有出现
    // 当数组i索引下的值不为0时，说明i出现过了，另一个数组若遍历到这个地方，说明i是共有元素
    public int[] mySolution(int[] nums1, int[] nums2){
        int[] hash = new int[1000];
        HashSet<Integer> s = new HashSet<>();
        for (int i = 0; i < nums1.length; i++) {
            hash[nums1[i]]++;
        }
        for (int i = 0; i < nums2.length; i++) {
            if(hash[nums2[i]] > 0)
                s.add(nums2[i]);
        }
        return s.stream().mapToInt(i->i).toArray();
    }
}
